﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web;
namespace HttpHandler
{
    /// <summary>
    /// 流媒体防盗链
    /// </summary>
    public class VideoHandler : IHttpHandler
    {
        const string ERRVIDEO = "/Content/daolian.jpg";
        /// <summary>
        /// 密钥
        /// </summary>
        const string DESKEY = "abcd1234";
        #region IHttpHandler 成员

        public bool IsReusable
        {
            get { return true; }
        }

        /// <summary>
        /// 验证用户有效性，有权限就可以下载，当然你的URL也可以发给其它人，这没有问题
        /// </summary>
        /// <param name="userID"></param>
        /// <param name="resourceID"></param>
        /// <returns></returns>
        public bool GetUserValidate(string validateSource)
        {
            bool res = false;
            //  var des_key = new VCommons.Encryptor.DESEncryptor().DecryptString(validateSource + DESKEY);
            var des_key = "";
            string[] keyArr = des_key.Split(new char[] { '|' }, StringSplitOptions.RemoveEmptyEntries);

            string userID = keyArr[0];
            string resourceID = keyArr[1];
            //调用主站的验证方法
            return res;
        }
        public void ProcessRequest(HttpContext context)
        {
            // CDN有其它域中，我们需要URL串或者其它方式去验证用户权限
            // 为CDN提供一个接口，用来验证当前用户有效性，及对媒体是否有操作权限
            // 验证符合访问媒体的用户权限
            // 用户ID密码可以通过加密码方式进行URL地址传递
            //if (GetUserValidate(context.Request.QueryString["ValidateSource"]))
            //{
            // TODO： ValidateSource由userid与resourceid组成，可以通过一些加密规则进行解密

            //验证相关
            //}
            //本域中可以通过cookies去判断用户权限 
            if (string.IsNullOrWhiteSpace(VCommons.Http.CookieHelper.Read("eee114", "UserID"))
                || Convert.ToInt32(VCommons.Http.CookieHelper.Read("eee114", "UserID")) <= 0)
            {
                context.Response.ContentType = "mpg4 video/mp4";
                context.Response.WriteFile(ERRVIDEO);
            }
        }

        #endregion
    }
}
